CMake使用教程.docx | 您所在的位置:网站首页 › cmake 指定安装目录 › CMake使用教程.docx |
CMake使用教程.docx 《CMake使用教程.docx》由会员分享,可在线阅读,更多相关《CMake使用教程.docx(12页珍藏版)》请在冰豆网上搜索。 CMake使用教程 CMake使用教程 CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。 通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。 CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(makeinstall)、测试安装的程序是否能正确执行(maketest,或者ctest)、生成当前平台的安装包(makepackage)、生成源码包(makepackage_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。 如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。 总之,CMake是一个非常强大的编译自动配置工具,支持各种平台,KDE也是用它编译的,感兴趣的可以试用一下。 准备活动: (1)安装cmake。 下载地址: http: //www.cmake.org/cmake/resources/software.html 根据自己的需要下载相应的包即可,Windows下可以下载zip压缩的绿色版本,还可以下载源代码。 (2)运行cmake的方法。 (GUI、命令行) http: //www.cmake.org/cmake/help/runningcmake.html CMake使用步骤: 运行GUI的cmake界面: cmake-2.8.1-win32-x86/bin/cmake-gui.exe 执行Configure: 运行之后,生成了如下文件: 生成Makefile: 执行Generate之后生成如下文件: 运行make进行编译: 编译完成后,在build目录生成Tutorial.exe,运行Tutorial.exe25就可以看到运行结果: 运行makeinstall安装程序: 运行maketest进行测试: 通过cmaketutorial学习CMake配置方法 http: //www.cmake.org/cmake/help/cmake_tutorial.html 可以在源代码的Tests/Turorial目录中找到这个手册对应的代码。 1、Step1。 (如果不知道如何使用cmake,以及如何使用编译产生的Turorial.exe,可先看下前面“CMake使用步骤”的说明,它以Step4为例详细介绍了使用过程,Step1的配置可能不够完全,比如无法运行makeinstall,无法运行maketest,但可以参考。 ) 简单的程序编译。 (1)运行GUI的cmake,指定要编译的源代码路径和二进制文件路径(会自动创建)。 (2)点击Configure,配置成功后,再点击Generate。 配置需要选择合适的编译器,虽然我安装了VC2008,但没有配置成功;选择UnixMakefiles,配置成功,它自动找到了DevC++下的gcc.exe等编译器。 (3)在build3目录执行make,就能够编译生成Turorial.exe了。 D: /Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step1/build3>make LinkingCXXexecutableTutorial.exe [100%]BuilttargetTutorial 可以运行一下Turorial.exe: D: /Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step1/build3>Tutorial.exe Tutorial.exeVersion1.0 Usage: Tutorial.exenumber D: /Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step1/build3>Tutorial.exe4 Thesquarerootof4is2 2、Step2 把子目录编译为库,并且链接到最终的可执行文件。 include_directories("${PROJECT_SOURCE_DIR}/MathFunctions") add_subdirectory(MathFunctions) #使得子目录MathFunctions也能被编译 #addtheexecutable add_executable(Tutorialtutorial.cxx) target_link_libraries(TutorialMathFunctions) 产生makefile: 在GUI上点击Configure,之后Generate还是灰色,再次点击Configure,Generate就可以点击了。 编译: 在build目录运行make,即可开始编译,但是开始会报告sh.exe运行异常,应该是Tools下的UnxUtils的sh.exe与Win7不兼容,发现有如下make文件,估计是它导致的,于是把它重命名,不使用UnxUtils下的make,就OK乐。 D: /Tools/CMD/UnxUtils/usr/local/wbin/make.exe 编译过程: D: /Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step2/build>make [50%]BuildingCXXobjectMathFunctions/CMakeFiles/MathFunctions.dir/mysqrt.cxx .obj LinkingCXXstaticlibrarylibMathFunctions.a [50%]BuilttargetMathFunctions LinkingCXXexecutableTutorial.exe [100%]BuilttargetTutorial 3、Step3 支持makeinstall把程序安装到系统指定目录,并且运行一些测试检查它是否能够正常工作。 a、安装时使用的基础目录,由CMAKE_INSTALL_PREFIX指定。 b、可以通过一个很简单的用例检查程序是否运行起来,没有出现异常。 (TurotialRuns只是一个用例名字) add_test(TutorialRunsTutorial25) c、macro方式进行多组数据的测试是非常简洁方便的。 #defineamacrotosimplifyaddingtests,thenuseit macro(do_testargresult) add_test(TutorialComp${arg}Tutorial${arg}) set_tests_properties(TutorialComp${arg} PROPERTIESPASS_REGULAR_EXPRESSION${result}) endmacro(do_test) #doabunchofresultbasedtests do_test(25"25is5") do_test(-25"-25is0") 执行makeinstall: D: /Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build>makeinstall [50%]"BuilttargetMathFunctions" [100%]"BuilttargetTutorial" Installtheproject... --Installconfiguration: "" --Installing: C: /ProgramFiles/Tutorial/bin/Tutorial.exe --Installing: C: /ProgramFiles/Tutorial/include/TutorialConfig.h --Installing: C: /ProgramFiles/Tutorial/bin/libMathFunctions.a --Installing: C: /ProgramFiles/Tutorial/include/MathFunctions.h 安装结果: C: /ProgramFiles/Tutorial>tree/f C: . ├─bin │libMathFunctions.a │Tutorial.exe │ └─include MathFunctions.h TutorialConfig.h 执行maketest: D: /Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build>maketest Runningtests... TestprojectD: /Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build Start1: TutorialRuns 1/5Test#1: TutorialRuns.....................Passed0.01sec Start2: TutorialComp25 2/5Test#2: TutorialComp25...................Passed0.01sec Start3: TutorialNegative 3/5Test#3: TutorialNegative.................Passed0.01sec Start4: TutorialSmall 4/5Test#4: TutorialSmall....................Passed0.00sec Start5: TutorialUsage 5/5Test#5: TutorialUsage....................Passed0.00sec 100%testspassed,0testsfailedoutof5 TotalTesttime(real)=0.13sec 修改一个测试用例,让它不过: 修改顶层CMakeLists.txt,然后重新Configure和Generate,然后maketest即可看到结果。 D: /Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build>maketest Runningtests... TestprojectD: /Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build Start1: TutorialRuns 1/5Test#1: TutorialRuns.....................Passed0.01sec Start2: TutorialComp25 2/5Test#2: TutorialComp25...................***FailedRequiredregularexpre ssionnotfound.Regex=[25is3 ]0.01sec Start3: Tu |
CopyRight 2018-2019 实验室设备网 版权所有 |